package com.yiqiu.system.controller;

import com.yiqiu.common.core.domain.entity.SysRole;
import com.yiqiu.common.core.domain.vo.AjaxResult;
import com.yiqiu.system.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色信息操作处理
 * 
 * @author weiyi
 */
@RestController
@RequestMapping("/system/role")
public class SysRoleController {
    
    @Autowired
    private SysRoleService roleService;
    
    /**
     * 获取角色列表
     */
    @GetMapping("/list")
    public AjaxResult list(SysRole role) {
        List<SysRole> list = roleService.selectRoleList(role);
        return AjaxResult.success(list);
    }
    
    /**
     * 根据角色ID获取详细信息
     */
    @GetMapping("/{roleId}")
    public AjaxResult getInfo(@PathVariable Long roleId) {
        return AjaxResult.success(roleService.selectRoleById(roleId));
    }

    
    /**
     * 新增角色
     */
    @PostMapping
    public AjaxResult add(@RequestBody SysRole role) {
        // 设置创建者和更新者
        // 实际项目中应该从用户会话中获取当前登录用户信息
        role.setCreateBy("admin");
        role.setUpdateBy("admin");
        int rows = roleService.insertRole(role);
        return rows > 0 ? AjaxResult.success() : AjaxResult.error("新增角色失败");
    }
    
    /**
     * 修改角色
     */
    @PutMapping
    public AjaxResult edit(@RequestBody SysRole role) {
        // 设置更新者
        // 实际项目中应该从用户会话中获取当前登录用户信息
        role.setUpdateBy("admin");
        int rows = roleService.updateRole(role);
        return rows > 0 ? AjaxResult.success() : AjaxResult.error("修改角色失败");
    }
    
    /**
     * 删除角色
     */
    @DeleteMapping("/{roleIds}")
    public AjaxResult remove(@PathVariable Long[] roleIds) {
        int rows = roleService.deleteRoleByIds(roleIds);
        return rows > 0 ? AjaxResult.success() : AjaxResult.error("删除角色失败");
    }
    
    /**
     * 删除单个角色
     */
    @DeleteMapping("/single/{roleId}")
    public AjaxResult removeSingle(@PathVariable Long roleId) {
        int rows = roleService.deleteRoleById(roleId);
        return rows > 0 ? AjaxResult.success() : AjaxResult.error("删除角色失败");
    }
} 